//引入工具函数
import { getFilterData } from '../utils'

export default{
    //当前模块的数据
    data: null,
    //初始化
    setup(Mock){
        //模拟获取列表
        this.mockListXhr(Mock)
        //模拟列表新增
        this.mockAddXhr(Mock)
        //模拟列表编辑
        this.mockEditXhr(Mock)
        //模拟列表删除
        this.mockDelXhr(Mock)
    },
    //创建数据
    createData(Mock){
        this.data = Mock.mock({
            "list|30": [
                {
                    "id|+1": 1,//id
                    "username": "@name",//用户名
                    "nickname": "@cname",//姓名
                    "address": "@province",//地址
                }
           ],
           total: 30
        })
    },
    //模拟获取列表
    mockListXhr(Mock){
        //请求地址
        var url_reg = /\/user\/list*/
        //模拟获取菜单列表
        Mock.mock(url_reg,'get',(options)=>{
            //初次返回则创建数据
            if(!this.data){
                //创建数据
                this.createData(Mock)
            }

            //查询和过滤数据
            var res_data = getFilterData(this.data, options.url)

            //返回数据
            return {
                code: 1,
                data: res_data
            }
        })
    },
    //模拟列表新增
    mockAddXhr(Mock){
        //请求地址
        var url_reg = /\/user\/add*/
        //模拟获取菜单列表
        Mock.mock(url_reg,'post',(options)=>{
            //解析参数
            const row = JSON.parse(options.body)
            //保存新数据
            this.data.total++
            row.id = Number(this.data.total)
            //保存数据
            this.data.list.unshift(row)
            //返回数据
            return {
                code: 1,
                msg: "操作成功"
            }
        })
    },
    //模拟列表编辑
    mockEditXhr(Mock){
        //请求地址
        var url_reg = /\/user\/edit*/
        //模拟获取菜单列表
        Mock.mock(url_reg,'post',(options)=>{
            //解析参数
            const row = JSON.parse(options.body)
            //根据id找到对应的数据
            var target = this.data.list.find(item=>{
                return item.id == row.id
            })
            //如果数据存在
            if(target){
                //更新字段
                for(var key in row){
                    if(key != 'id' && row[key]){
                        target[key] = row[key]
                    }
                }

                //返回成功响应
                return {
                    code: 1,
                    msg: "操作成功"
                }
            }else{
                //返回失败响应
                return {
                    code: 0,
                    msg: "操作失败"
                }
            }
        })
    },
    //模拟列表删除
    mockDelXhr(Mock){
        //请求地址
        var url_reg = /\/user\/del*/
        //模拟获取菜单列表
        Mock.mock(url_reg,'post',(options)=>{
            //解析参数
            const params = JSON.parse(options.body)
            //获取要删除的ids
            var ids = params.ids || []
            //参数不存在
            if(ids.length == 0){
                //返回失败响应
                return {
                    code: 0,
                    msg: "操作失败"
                }
            }
            //删除数据
            ids.forEach(id=>{
                //根据id找到对应的数据
                var index = this.data.list.findIndex(item=>{
                    return item.id == id
                })
                //执行删除
                if(index != -1){
                    this.data.list.splice(index,1)
                }
            })
            //更新列表长度
            this.data.total = this.data.list.length
            //返回成功响应
            return {
                code: 1,
                msg: "操作成功"
            }
        })
    }
}